import axios from "axios";
import { useUseStore } from "@/stores/user";
import { OpenChildrenPage } from "@/hook/routerHandle";
import { ToastFun } from "@/hook/toast";
import { itemStore } from "@/stores/item";

const service = axios.create({
    baseURL: "/api", // 请求的目标地址
    timeout: 30000, // 超时取消请求的时间
    // 请求头设置
    headers: {
        "Content-Type": "application/json;charset=utf-8", //表单数据转化
    },
});

// axios请求拦截器
service.interceptors.request.use(
    (config) => {
        // console.log("请求配置:", config);
        if (config.url !== "/pipayshopapi/user-info/login" && config.url !== "/pipayshopapi/user-info/userRegister") {
            config.headers["token"] = useUseStore().token;
        }
        config.headers["lang"] = itemStore().lang;
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);
// service.interceptors.request.use(
//     (config) => {
//         const token = getToken(); // 从本地存储中获取 Access Token

//         // 如果存在 Token，将其添加到请求头的 token 字段中
//         if (token) {
//             config.headers['token'] = useUseStore().token; // 这里改为 'token' 字段
//         }

//         return config; // 返回配置的请求
//     },
//     (error) => Promise.reject(error) // 捕获请求错误
// );

// axios响应拦截器
service.interceptors.response.use(
    (res) => {
        // console.log("响应结果:", res);
        if (res.code == 500) {
            ToastFun("fail", { msg: res.data.msg });
            return Promise.reject(new Error(res.data.msg || "服务器错误"));
        }
        if (res.config.url === "/pipayshopapi/user-info/login" || res.config.url === "/pipayshopapi/user-info/userRegister") {
            // 将token存入pinia，用于放在其他请求的请求头，做校验
            useUseStore().token = res.data.data.token;
        }

        return res;
    },
    (error) => {
        const userStore = useUseStore();
        if (error.code == 403) {
            userStore.userInfo.accessToken = "";
            console.log("错误提示:", error);
            OpenChildrenPage("/loginHome");
        }
        if (error.toString().indexOf('Network Error') !== -1) {
            ToastFun("show", { msg: "Network request timeout" });
            return Promise.reject(error)
        }
        return Promise.reject(error);
    }
);

export default service;